package cn.bonoon.kernel.web.annotations.components;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * <pre>
 * 可以使用{@link cn.bonoon.kernel.web.annotations.AutoDataLoader @AutoDataLoader}来自动加载数据
 * 如果使用了自动加载数据，则<code>value</code>属性不需要指定值，该值无效
 * 
 * 下拉树型列表，用于修改的话不应该使用ajax方式；因为如果使用ajax方式，默认加载
 * 只加载最外层的数据，如果所选中的项是树的子项，则界面上所选中的无法显示被选中节点
 * 的文字描述，只显示了id。
 * 一般数据树结构数据多，应该根据功能来使用条件进行过滤，不应该把所有数据都加载出来
 * 
 * 如果需要支持多选，可以通过{@link ComboMultipleChecker}注解来指定；默认的情况下
 * 如果被注解的该字段为数组，则认为是支持多先，否则是单选
 * 
 * 如果使用{@link cn.bonoon.kernel.web.annotations.AutoDataLoader @AutoDataLoader}来生成自动加载数据的分为两种情况：
 * 一、不使用ajax加载，则默认使用{@link cn.bonoon.kernel.support.models.Node @Node}
 * 二、使用了ajax加载，则默认使用{@link cn.bonoon.kernel.support.models.AjaxNode @AjaxNode}
 * 如果需要自定义结果集，则需要使用{@link cn.bonoon.kernel.web.annotations.AutoDataResultClass @AutoDataResultClass}来定义；
 * 
 * 是否以ajax方式异步加载数据，则可以使用{@link cn.bonoon.kernel.web.annotations.AjaxTreeLoader @AjaxTreeLoader}
 * 注解来指定
 * </pre>
 * @author jackson
 *
 */
@Target(FIELD)
@Retention(RUNTIME)
public @interface AsComboTree {

	/**
	 * url
	 * 
	 * <hr/>
	 * 如果是自己指定的URL则需要自己指定项目名，即：{@link javax.servlet.ServletContext#getContextPath() ServletContext.getContextPath()}
	 * 因为自动生成的处理器的路径是会自己加上{@link javax.servlet.ServletContext#getContextPath() ServletContext.getContextPath()}信息的
	 * @return
	 */
	String value() default "";
	
	OnReload[] reload() default {};
}
